/*
 * 文件名：IShoppingCartService.java
 * 版权：Copyright by hlst
 * 描述：
 * 修改人：liuziyu
 * 修改时间：2016年7月14日
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package com.zcsy.manage.service.mall;

import java.util.List;
import java.util.Map;

import com.zcsy.commons.model.RequestJson;
import com.zcsy.manage.model.mall.GoodsInfo;
import com.zcsy.manage.model.mall.GoodsSpecification;
import com.zcsy.manage.model.mall.OrderInfo;
import com.zcsy.manage.model.mall.ShoppingCart;
import com.zcsy.manage.model.mall.vo.ShoppingCartVo;
import com.zcsy.manage.model.system.User;

/**
 * @Title: IShoppingCartService.java
 * @Package： com.zcsy.manage.service.mall 
 * @Description: 购物车服务层
 * @author liuziyu liuziyuwri@foxmail.com
 * @Copyright: 2016 武汉恒数利通软件有限公司 All rights reserved.
 * @date 2016年7月14日
 * @version 1.0
 * @see JDK1.7.0_75
 * @since
 */
public interface IShoppingCartService {

	/**
	 * @Description 加入购物车<br>
	 * 
	 * @param cart 加入购物车对象
	 * @return 1：加入成功 0：加入失败
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年7月15日
	 * @see 
	 */
	int insertToCart(ShoppingCart cart);
	
	/**
	 * @Method: addAmount
	 * @Description 增加商品数量
	 * @param cartId
	 * @return 
	 * @author liuziyu liuziyuwri@foxmail.com
	 * @date 2016年7月14日
	 * @see 
	 */
	int addAmount(String cartId);
	
	/**
	 * @Method: reduceAmount
	 * @Description 减少商品数量
	 * @param cartId
	 * @return 
	 * @author liuziyu liuziyuwri@foxmail.com
	 * @date 2016年7月14日
	 * @see 
	 */
	int reduceAmount(String cartId);
	
	/**
	 * @Method: getCartInfo
	 * @Description 返回购物车信息
	 * @param cartId
	 * @return 
	 * @author liuziyu liuziyuwri@foxmail.com
	 * @date 2016年7月14日
	 * @see 
	 */
	ShoppingCart getCartInfo(String cartId);
	
	/**
	 * @Method: setAmount
	 * @Description 设置商品数量
	 * @param map
	 * @return 
	 * @author liuziyu liuziyuwri@foxmail.com
	 * @date 2016年7月14日
	 * @see 
	 */
	int setAmount(Map<String, Object> map);
	
	/**
	 * @Method: deleteByPrimaryKey
	 * @Description 根据主键移除购物车
	 * @param cartId
	 * @return 
	 * @author liuziyu liuziyuwri@foxmail.com
	 * @date 2016年7月15日
	 * @see 
	 */
	int deleteByPrimaryKey(String cartId);

	/**
	 * @Description 加入购物车<br>
	 * 
	 * @param userAccount 登录名
	 * @param goodsId 商品id
	 * @param spectificationId 规格id
	 * @param amount 商品数量
	 * @param type 商品来源：1购物车 2立即购买
	 * @return 
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年7月15日
	 * @see 
	 */
	Object addToCart(String userAccount, String goodsId,String spectificationId, int amount, int type,GoodsInfo goods,GoodsSpecification spec,String cellId);
	
	Integer getUserCartNum(String account);
	/** 
	 * @Title: getSettleCarts 
	 * @Description: 获取要结算的购物车信息
	 * @param @param ids	购物车记录ID
	 * @param @return     
	 * @return List<OrderCart>    购物车记录 
	 * @throws 
	 */
	public List<ShoppingCart> getSettleCarts(String[] ids);
	
	/** 
	 * @Title: checkSubmitOrder 
	 * @Description: 判断下单的商品是否ok
	 * @param @param cartList
	 * @param @return     
	 * @return RequestJson     
	 * @throws 
	 */
	public RequestJson checkSubmitOrder(List<ShoppingCart> cartList, User user);

	/** 
	 * @Title: delFromCart 
	 * @Description: 批量删除购物车商品，物理删除
	 * @param @param ids	购物车记录ID集合
	 * @param @return     
	 * @return int     成功或者失败
	 * @throws 
	 */
	public int delFromCart(String[] cIds);
	
	/**
	 * 从购物车列表中添加我的收藏
	 * @Method: addMyFavorite
	 * @Description 1、添加我的收藏
	 *              2、从购物车中删除该信息
	 * @param shopcartId 购物车信息id
	 * @param goodsId 商品id
	 * @param userId 业主id
	 * @author hubing
	 * @date 2016年8月1日
	 */
	public void addMyFavorite(String shopcartId, String goodsId, String userId);
	
	/**
	 * 更新购物车中商品数量
	 * @Method: updateAmount
	 * @param shopcartId 购物车记录id
	 * @param amount 数量
	 * @author hubing
	 * @date 2016年8月2日
	 */
	public int updateAmount(String shopcartId, String amount);
	
	/**
     * 根据购物车生成订单信息
     * @Method: confirmOrderFromShopcart
     * @Description 订单生成步骤
     *             1、根据勾选的商品生成总订单
     *             2、根据勾选商品所属店铺、是否需要配送、是否需要用户确认进行拆单
     *             3、生成订单详情信息
     * @param shopcartIds 购物车id集合
     * @param orderInfo 页面传递订单信息
     * @param user 业主信息
     * @param type 商品类别  正常/秒杀/积分
     * @author hubing
     * @date 2016年8月2日
     */
	public OrderInfo confirmOrderFromShopcart(String shopcartIds, User user, List<OrderInfo> orderInfo, Integer type);
	
	
	public List<ShoppingCartVo> castShoopingCartVo(List<ShoppingCart> list, int goodsType);
	
	
	public void confirmOrderByGoodsId(String goodsIds);
	
	/**
	 * 根据当前登陆人账号和当前小区信息查询购物车信息
	 * @Method: queryShoppingCart
	 * @param userAccount 登陆人账号
	 * @param cellId 小区Id
	 * @author hubing
	 * @date 2016年8月2日
	 */
	public List<ShoppingCart> queryShoppingCart(String userAccount, String cellId);

}
